package reconhecimento.util;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

public class Constantes {
	public static final int ZERO = 0;
	public static final int UM = 1;
	public static final int DOIS = 2;
	public static final int TRES = 3;
	public static final int QUATRO = 4;
	public static final int CINCO =5;
	public static final int SEIS = 6;
	public static final int SETE = 7;
	public static final int OITO = 8;
	public static final int NOVE = 9;
	public static final int ALTURA_PADRAO = getAlturaPadrao();
	public static final int LARGURA_PADRAO = getLarguraPadrao();
	public static final int QTD_TESTES = getQtdTestes();
	public static final String PASTA = getPasta();
	public static final String EXTENSAO = getExtensao();
	private static Properties config = null;
	private static Constantes singletonConfig;
	
	protected Constantes(){
		final String configFile = "config.properties";
		InputStream i = null;
		i = getClass().getClassLoader().getResourceAsStream(configFile);
		if (null == i) {
			System.err.println("Falha ao carregar configuracoes.");
			System.exit(1);
		} else {
				try {
					config = new Properties();
					config.load(i);
					i.close();
				} catch (NumberFormatException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
		}
	}

	private static int getQtdTestes() {
		return Integer.parseInt(getConfig().getProperty("ReconhecedorDigitos.qtdTestes"));
	}

	private static int getAlturaPadrao(){
		return Integer.parseInt(getConfig().getProperty("ReconhecedorDigitos.altura"));
	}
	private static int getLarguraPadrao(){
		return Integer.parseInt(getConfig().getProperty("ReconhecedorDigitos.largura"));
	}
	private static String getPasta(){
		return getConfig().getProperty("ReconhecedorDigitos.pasta");
	}
	private static String getExtensao(){
		return getConfig().getProperty("ReconhecedorDigitos.extensao");
	}

	synchronized public static Constantes obterInstancia() {
		if (Constantes.singletonConfig == null) {
			Constantes.singletonConfig = new Constantes();
		}
		return singletonConfig;
	}
	
	private static Properties getConfig(){
		return  obterInstancia().config;
	}
}
